package es.uned.ii.si3.web.actions;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import es.uned.ii.si3.Constantes;
import es.uned.ii.si3.business.GestionProyectos;
import es.uned.ii.si3.model.Proyecto;
import es.uned.ii.si3.util.UserAgentDetector;
import es.uned.ii.si3.web.actions.generic.LoginRequiredAction;


public class VerProyectosAction extends LoginRequiredAction {

    public ActionForward executeWithAccess(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) {
    	
    	UserAgentDetector uaDetector = new UserAgentDetector(request);

		GestionProyectos gestionProyectos = new GestionProyectos();
		int idUsuario = this.getIdUsuario();

		if (request.getParameter("idProyecto") != null) {
			
			int id = -1;
			
			try {
				id = Integer.parseInt(request.getParameter("idProyecto"));
			} catch (Exception e) {
				return mapping.findForward(uaDetector.composeForward("nohayproyectos"));
			}
			
			Proyecto proyecto = gestionProyectos.getProyectoById(id);
			
			if (proyecto == null) {
				return mapping.findForward(uaDetector.composeForward("nohayproyectos"));
			}
				
			request.setAttribute("proyecto", proyecto);
			
			if (proyecto.getEstado().getIdEstado() == Proyecto.ESTADO_ABIERTO) {
				return mapping.findForward(uaDetector.composeForward("verdetalleabierto"));
			} else {
				String codigoFuenteURL = "upload/" + proyecto.getCodigoFuente();
				String memoriaURL = "upload/" + proyecto.getMemoria();
				request.setAttribute("codigoFuenteURL", codigoFuenteURL);
				request.setAttribute("memoriaURL", memoriaURL);
				
				return mapping.findForward(uaDetector.composeForward("verdetallecerrado"));
			}
			
		} else {
			//Solo el profesor puede sar un listado completo
			if (!this.getUsuario().getRol().getDescripcion().toLowerCase().equals(Constantes.ROL_PROFESOR)) {
				return mapping.findForward(uaDetector.composeForward("nohayproyectos"));
			}
			
			List<Proyecto> listaProyectos = gestionProyectos.getProyectosPorProfesor(idUsuario);
			
			if ((listaProyectos == null) || (listaProyectos.isEmpty())) {
				return mapping.findForward(uaDetector.composeForward("nohayproyectos"));
			} else {
				request.setAttribute("listaProyectos", listaProyectos);
				return mapping.findForward(uaDetector.composeForward("verproyectos"));
			} 
		}//else
    }
    
    
}
